約 2,894,848 件
https://w.atwiki.jp/arma2dayz/pages/133.html
Ammo Box(弾薬箱) 弾薬箱にはスナイパーライフル用のマガジン・弾薬が詰まった、7.62mm Ammo Boxと、 STANAGマガジンとSTANAG SDマガジンが詰まった、5.56mm Ammo Boxの2つのタイプがある。 箱そのものを持ち運ぶことはできないが、Gキーで箱を調べて中身の弾を取り出すことが可能。 これら弾薬箱はいずれも北西の空港にある兵舎か、墜落したヘリコプターでのみ見つける事ができる。 7.62mm Ammo Box 5 Rnd. M24, 10個 20 Rnd. DMR Mag, 10個 10 Rnd. SVD Mag, 10個 5.56mm Ammo Box 30 Rnd. STANAG Mag, 20個 30 Rnd. STANAG SD Mag, 10個
https://w.atwiki.jp/medalofhonor/pages/383.html
投票可能カスタムマップ一覧 メニュー 投票可能カスタムマップ一覧Aarschot Dam(Aarschot) DAS BOOT(dasboot) The Church(TheChurch_Final) Tirtagen-Kechtat Battle of Bastogne .99 BETA(bastogne99) Beach Objective(Beachobj_finallight) Bespin-Capture the flag(-=[XTC]=-Body Bagger's Bespin map) Bloody Snow (Beta 3)(Bloody_Snow_obj) Desert Base(desertbase_final) Desert Base - Sandstorm(desertbase_sand) Kasban LABORATORY_nese lol v2 13(lol_V2_13MAP) OpCenter Objective(OpCenter_obj) ※決定 Operation Market Garden(obj_maromg) Polska Solina(PolskaSolina) St Renan Bridge(Kmarzo-St-Renan) V2 Shelter -(BETA)-(v2shelterbeta) V3 Rocket Laboratory(Josef3D-v3) Valley Ver3.0(obj_valley_ver3) ※決定 VS-UK Abbey Assault [BETA](VSUK-AbbeyBeta) Watten ZUTPHEN HOLLAND(Zutphen2.1) Aarschot Dam(Aarschot) 連合軍目的: ダムの制御装置を爆破せよ 枢軸軍目的: ダムの制御装置を死守せよ ダウンロード: http //medalofhonor.filefront.com/file/Aarschot;11186 DAS BOOT(dasboot) 連合軍目的: 潜水艦を爆破せよ 枢軸軍目的: 潜水艦を死守せよ ダウンロード: http //www.filefront.com/1323447/dasboot.zip The Church(TheChurch_Final) 連合軍目的: すべての敵を倒せ 枢軸軍目的: すべての敵を倒せ ダウンロード: http //medalofhonor.filefront.com/file/The_Church;15350 Tirtagen-Kechtat 連合軍目的: すべての敵を倒せ 枢軸軍目的: すべての敵を倒せ ダウンロード: http //oec-clan.de/include.php?path=contentarchive type=4 PHPKITSID=qx7rDDeGDnLdCTcDi0Lekt6vmG3X202u Battle of Bastogne .99 BETA(bastogne99) 連合軍目的: 3両のM4シャーマンを死守せよ 枢軸軍目的: M4シャーマンを3両爆破せよ ダウンロード: http //www.filefront.com/911425/bastogne99.zip Beach Objective(Beachobj_finallight) 連合軍目的: タワーを爆破せよ 枢軸軍目的: タワーを死守せよ ダウンロード: http //domoo.org/page003.html Bespin-Capture the flag(-=[XTC]=-Body Bagger s Bespin map) 連合軍目的: 敵軍のベースから旗を奪い自軍のベースに持ち帰れ 枢軸軍目的: 敵軍のベースから旗を奪い自軍のベースに持ち帰れ ダウンロード: http //www.filefront.com/1468277/bespin.zip Bloody Snow (Beta 3)(Bloody_Snow_obj) 連合軍目的: レーダーとV2ロケットを爆破せよ 枢軸軍目的: レーダーとV2ロケットを死守せよ ダウンロード: http //domoo.org/page003.html Desert Base(desertbase_final) 連合軍目的: 88mm砲とティーガーIを爆破せよ 枢軸軍目的: 88mm砲とティーガーIを死守せよ ダウンロード: http //domoo.org/page003.html Desert Base - Sandstorm(desertbase_sand) 連合軍目的: 88mm砲とティーガーIを爆破せよ 枢軸軍目的: 88mm砲とティーガーIを死守せよ ダウンロード: http //www.filefront.com/966018/desertbase_sand.zip Kasban 連合軍目的: 88mm砲を爆破せよ 枢軸軍目的: 88mm砲を死守せよ ダウンロード: http //www.filefront.com/1323483/kasbah.zip LABORATORY_nese 連合軍目的: 地下へ向かい爆弾を2ヶ所に設置し爆破せよ 枢軸軍目的: 施設の爆破を阻止せよ ダウンロード: http //medalofhonor.filefront.com/file/Laboratory_botaddon;101097 ※改造前のマップ、BOT対応 ※LABORATORYの改造版 lol v2 13(lol_V2_13MAP) 連合軍目的: 88mm砲とV2ロケットを爆破せよ 枢軸軍目的: 88mm砲とV2ロケットを死守せよ ダウンロード: http //wat.s18.xrea.com/mohha/ ※MODSの「picup」でダウンロード OpCenter Objective(OpCenter_obj) ※決定 連合軍目的: 屋上へ向かいレーダーを爆破せよ 枢軸軍目的: レーダーを死守せよ ダウンロード: http //www.filefront.com/1404353/OpCenter/ Operation Market Garden(obj_maromg) 連合軍目的: 88mm砲を爆破せよ 枢軸軍目的: 88mm砲を死守せよ ダウンロード: http //www.filefront.com/914283/obj_maromg.zip Polska Solina(PolskaSolina) 連合軍目的: 88mm砲を爆破せよ 枢軸軍目的: 88mm砲を死守せよ ダウンロード: http //www.filefront.com/1468541/polskasolina.zip St Renan Bridge(Kmarzo-St-Renan) 連合軍目的: 橋の爆破を阻止せよ 枢軸軍目的: 爆破装置を橋の下に設置し、爆破せよ ダウンロード: http //www.filefront.com/3198007/Kmarzo-St-Renan.zip V2 Shelter -(BETA)-(v2shelterbeta) 連合軍目的: V2ロケットを爆破せよ 枢軸軍目的: V2ロケットを死守せよ ダウンロード: http //www.filefront.com/966053/v2shelterbeta.zip V3 Rocket Laboratory(Josef3D-v3) 連合軍目的: コントロールルームと試作V3ロケットを爆破せよ 枢軸軍目的: コントロールルームと試作V3ロケットを死守せよ ダウンロード: http //domoo.org/page003.html Valley Ver3.0(obj_valley_ver3) ※決定 連合軍目的: V2ロケットの制御装置とレーダーを爆破せよ 枢軸軍目的: V2ロケットの制御装置とレーダーを死守せよ ダウンロード: http //domoo.org/page003.html VS-UK Abbey Assault [BETA](VSUK-AbbeyBeta) 連合軍目的: 無線機と無線アンテナを爆破せよ 枢軸軍目的: 無線機と無線アンテナを死守せよ ダウンロード: http //www.filefront.com/5385935/user-vsuk-abbeybeta.zip/ Watten 連合軍目的: Defend Watten from the Nazis. 枢軸軍目的: - Destroy the Armory. / - Get the Line. / Find the plans. ダウンロード: http //www.filefront.com/1323594/watten.zip ZUTPHEN HOLLAND(Zutphen2.1) 連合軍目的: 88mm砲を爆破せよ 枢軸軍目的: 88mm砲を死守せよ ダウンロード: http //www.filefront.com/1323596/Zutphen2.1.zip
https://w.atwiki.jp/ntemacs/pages/17.html
■ Emacs 全般で利用できる設定 (一部、MinGW版 Emacs 特有の設定を含む) 【お知らせ】 2018/07/25 追記 最近の Emacs のバージョンでは、tramp-default-method のデフォルトの設定が "scp" や "pscp" の外部転送メソッドになったようです。 2018/05/07 追記 tramp の挙動がおかしい時は、Emacs を終了後、~/.emacs.d/tramp というファイルを削除してから Emacs を再起動してください。 2017/04/14 追記 本日発見がありました。Windows版 Emacs を GUI で立ち上げて Tramp によりリモートに接続している状態で、Tramp の接続を行っているウィンドウにファイルをドラック&ドロップすると、接続先にそのファイルの送信され格納されるのですね。知りませんでした。 2015/06/17 追記 リモートサーバに接続して shell を起動した際に、日本語のファイル名が文字化けしていたのでその対策を追加しました。 (tramp-remote-process-environment に LC_CTYPE の設定を追加した。) 2014/12/11 追記 MinGW版 Emacs-24.4、Emacs-24.5 では、fakecygpty を経由して tramp の ssh を利用している場合に 2936バイト を超えるファイルをインラインメソッドでセーブできなくなりました。 この対策を「fakecygpty を使うための設定」に追加しました。 2014/10/23 追記 Emacs-24.4 では scpc method は提供されていないようなので、tramp-method を scp に戻しました。tramp-method の説明は次のページを参照してください。 http //www.gnu.org/software/emacs/manual/html_node/tramp/External-methods.html 【本題】 【重要】 MinGW版 Emacs でこの設定を使う場合は、「fakecygpty を使うための設定」を行ってください。 【重要】tramp の外部転送メソッド(以降で説明)を使うと、ファイル転送用のコネクションを張る毎に認証を求められます。このため、公開鍵方式を使っての認証の自動化が必要となります。 CUI で Linux を利用する場合は、公開鍵の設定を行った後、.bash_profile に次の設定を行ってください。(VirtualBox で Ubuntu Desktop を使う場合などデスクトップ環境が構築されている場合は、GNOME Keyring がいろいろうまくやってくれるようです。) keychain -q ~/.ssh/id_rsa source ~/.keychain/$HOSTNAME-sh # .bash_profile 内に次の設定がなければ有効とする # [ -r ~/.bashrc ] source ~/.bashrc keychain がインストールされていない場合は、インストールが必要です。 sudo -E apt install keychain Cygwin が利用環境の場合は、次の設定を参考としてください。 ssh-agent や ssh-pageant を使って、ssh のパスフレーズの入力を省略するための設定(方法3) (2019/09/13 追記)WSL が利用環境の場合は、ssh-agent-wsl の利用により Windows 側の ssh-agent に WSL から秘密鍵を登録でき、また Windows の ssh-agent を WSL からも利用できるようになります。 https //qiita.com/q1701/items/3cdc2d7ef7a3539f351d 一般的に tramp-method には、ssh や plink を設定している方が多いと思います。ただし、ssh や plink のメソッドは、リモートサーバとのファイルの転送(ファイルを開く場合も含む)にインラインメソッドというもののみを使います。(http //www.bookshelf.jp/texi/emacs-man/21-3/jp/tramp_ja_4.html#SEC5) このため、サイズの大きいファイルの転送には時間が掛かります。これを改善する tramp-method が scp や pscp です。(rsync、sftp も同様のメソッドです。) これらのメソッドは、あるサイズを超えるファイルの転送には外部転送メソッドというものを使います。あるサイズを超えなければ tramp-method の ssh や plink と同様の動きをしますので、機能拡張されたメソッドと考えればよいと思います。 (「あるサイズ」は変数 tramp-copy-size-limit で定義され、初期値(デフォルト値)は10240bytes となっています。) (tramp-methods の設定は、emacs/lisp/net/tramp-sh.el を見てください。tramp-copy-program が定義されているメソッドが、外部転送メソッド(を使うもの)です。) 次の設定は、この tramp-method を scp で使うための設定です。同様なことは tramp-method に pscp を使うことでも可能ですので、これまで tramp-method に ssh を使っていたか plink を使っていたかで使い分ければよいと思います。(pscp を使う場合は、tramp-default-method に pscp を設定してください。) (require tramp) (require tramp-sh) (setq tramp-default-method "scp") ;; リモートサーバで shell を開いた時に日本語が文字化けしないよう、LC_ALL と LC_CTYPE の設定を無効にする ;; http //www.gnu.org/software/emacs/manual/html_node/tramp/Remote-processes.html#Running%20a%20debugger%20on%20a%20remote%20host (let ((process-environment tramp-remote-process-environment)) (setenv "LC_ALL" nil) (setenv "LC_CTYPE" nil) (setq tramp-remote-process-environment process-environment)) MinGW版 の Emacs(NTEmacs64、GNU配布版の Emacs など)で tramp-default-method に scp を利用する場合は、次の設定も行ってください。 (setq tramp-encoding-shell "sh") ;; ドライブレターの後の「:」が tramp-method の後の「:」と混同されるのを対策する (advice-add tramp-do-copy-or-rename-file-out-of-band around (lambda (orig-fun rest args) (let ((default-directory "/")) (dolist (pos (1 2)) (unless (tramp-tramp-file-p (nth pos args)) (setf (nth pos args) (substring (shell-command-to-string (concat "cygpath -u " (shell-quote-argument (nth pos args)))) 0 -1))))) (apply orig-fun args))) 変更履歴 2012/09/19 mapcar の Warning が出るのを対策した。 (http //www.mew.org/~kazu/doc/elisp/function.html) 2012/09/19 sftp にも対応した。 2012/11/27 shell-command-to-string に与える引数のクオートの方法を変更した。 2012/12/27 lambda関数のクォートをとった。 2012/12/28 fakecygpty版プログラムを起動するための設定を「fakecygpty を使うための設定」に集約した。 2012/12/31 拡張子を取る方法に file-name-sans-extension を採用した。 2013/01/08 tramp-adjust-process-args から引数の存在チェックを削除した。 2013/11/09 tramp-method を scp から scpc に変更した。 2014/05/09 フォーマット整形を行った。(内容変更はなし) 2014/05/11 通信時の圧縮オプションを追加した。 2014/10/23 tramp-method を scpc から scp に戻した。 2014/11/03 Emacs-24.4 で外部転送メソッドを使った処理の方法が変更となっていたので、その対策をした。 2014/11/11 NTEmacs64 で外部転送メソッドを使った処理を行った際に「File exists, but cannot be read」というエラーが発生するのを対策した。 2015/06/17 リモートサーバに接続して shell を起動した際に、日本語のファイル名が文字化けしていたのでその対策を追加した。 2015/09/09 advice を Emacs-24.4 以降の書式に見直した。
https://w.atwiki.jp/jpops/pages/8006.html
JIMMY THE DYNAMをお気に入りに追加 JIMMY THE DYNAMのリンク #bf Amazon.co.jp ウィジェット JIMMY THE DYNAMの報道 gnewプラグインエラー「JIMMY THE DYNAM」は見つからないか、接続エラーです。 JIMMY THE DYNAMとは JIMMY THE DYNAMの95%は花崗岩で出来ています。JIMMY THE DYNAMの4%は希望で出来ています。JIMMY THE DYNAMの1%は世の無常さで出来ています。 JIMMY THE DYNAM@ウィキペディア JIMMY THE DYNAM Amazon.co.jp ウィジェット 掲示板 名前(HN) カキコミ すべてのコメントを見る ページ先頭へ JIMMY THE DYNAM このページについて このページはJIMMY THE DYNAMのインターネット上の情報を集めたリンク集のようなものです。ブックマークしておけば、日々更新されるJIMMY THE DYNAMに関連する最新情報にアクセスすることができます。 情報収集はプログラムで行っているため、名前が同じであるが異なるカテゴリーの情報が掲載される場合があります。ご了承ください。 リンク先の内容を保証するものではありません。ご自身の責任でクリックしてください。
https://w.atwiki.jp/nicocache_nl/pages/15.html
FrontPage インストールとアップデート インストールとアップデート 最新版(派生版・改良版)nicocache_nlについて 現在はnicocache_nl本家がアップデートを行っていません そのため、現在はNicoCacheスレの方々が派生版・改良版を作成してくれています このページにあるものは、その最新版です 拡張やGUIはこのwikiで確認して、使いたいものだけ入れてください NicoCache_nl関連ファイル置き場は http //nicolist.net/nicocache_nl/up/ です 2010/10/18 現在、nicocache_nlを最低限インストールするためには 「NicoCache_nl (9).12」を任意の場所に解凍する。 「NicoCache_nl (9).12 +101029mod」を解凍して「NicoCache_nl (9).12」のフォルダに上書きする 音声を抽出したいなら、「mp4boxとswfextractの最新版」を解凍して出てくる、「MP4Box.exe」「swfextract.exe」「libgpac.dll」を「NicoCache_nl.jar」のあるフォルダに入れる。 ここを参照して、nl本体とブラウザの設定をする。 Windowsなら「NicoCacheGUI.bat」で起動。ショートカットをスタートアップに入れるのもよし。 その他好みで、「サンプルフィルタ」フォルダ内の「50_nlFilter_sample.txt」などを「nlFilters」に入れたり、修正したりする。フィルタ定義の「[Replace]」を「#[Replace]」とすれば無効にできる。 新プレイヤーをホイールスクロールやキーボードで操作したいなら、「サンプルフィルタ」内の「newPlayerFilter.txt」を見ると幸せになれるかも。 flvplayer_wrapperを使いたければ ここを参照 してください。 更新情報 2010/10/29 NicoCache_nl (9).12 +101029mod に更新されました 2010/10/29 nlMovieFetcher v0.6.1 に更新されました 2010/10/23 nlMovieFetcher-101023 に更新されました 2010/10/22 watchページで大百科のsummaryをタブとして表示するscript が公開されました 2010/10/19 nlProxyPac ver1.0 が公開されました 2010/10/17 NicoCache_nl (9).12 +101017mod に更新されました 2010/10/17 nlMediaInfo v0.1 が公開されました 2010/10/16 cacheCommentExtension 9.04a に更新されました 2010/10/14 totalRename v0.8.1 に更新されました 本体など(安定版) NicoCache_nl (9).12 (2010/08/11 {2010/08/11 )}; http //nicolist.net/nicocache_nl/up/img/nl571.zip NicoCache_nl (9).12 +101029mod (更新分のみ) (2010/10/29 {2010/10/29 )};http //nicolist.net/nicocache_nl/up/img/nl642.zip mp4boxとswfextractの最新版 (2009/05/30 {2009/05/30 )};http //www1.axfc.net/uploader/Sc/so/5312.zip flvplayer_wrapper 16 9 モード(コメント分布表示・クイックNGワード修正) (2010/08/28 {2010/08/28 )};http //nicolist.net/nicocache_nl/up/img/nl585.zip NicoCache_nl用List.js及びList.html nl_ListX 090319 by ◆pA8Bpf.Qvk (2009/03/19 {2009/03/19 )};http //nicolist.net/nicocache_nl/up/img/nl107.zip listee v0.20080710 (2008/07/11 {2008/07/11 )};http //nicolist.net/nicocache_nl/up/img/nl010.zip Thumbnail view var 0.01 (2009/11/03 {2009/11/03 )};http //nicolist.net/nicocache_nl/up/img/nl267.zip Extension Extensionリスト nlFilter NicoVideo header_light(9) ヘッダ用フィルタセット (2010/05/05 {2010/05/05 )};http //nicolist.net/nicocache_nl/up/img/nl389.zip killSponsor (2009/12/15 {2009/12/15 )};http //nicolist.net/nicocache_nl/up/img/nl319.zip topBarFilter.txt 改造版 (2010/07/03 {2010/07/03 )};http //nicolist.net/nicocache_nl/up/img/nl457.txt ランキング_PopupMenu (2010/03/09 {2010/03/09 )};http //nicolist.net/nicocache_nl/up/img/nl354.zip JSでプレイヤー変更・キャッシュ移動用セレクトボックス表示 (2010/08/11 {2010/08/11 )};http //nicolist.net/nicocache_nl/up/img/nl573.zip その他nlFilterはここを参照してください script autopager_mod v0.4 (2010/07/18 {2010/07/18 )}; http //nicolist.net/nicocache_nl/up/img/nl499.zip assort100806 (2010/08/06 {2010/08/06 )};keyController.js + keySeek.js + playlist.js + marking.js + extInfo.js + tag_edit_plus.js + getPoster.js + commentFilter.txt + assortFilter.txt(詳細はここを参照してください)http //nicolist.net/nicocache_nl/up/img/nl388.zip MoveFolder.js ver 1.7 (2010/05/22 {2010/05/22 )};http //nicolist.net/nicocache_nl/up/img/nl399.zip mylisaddfrom.js どこからでもマイリストが登録できるjs (2010/06/04 {2010/06/04 )};(詳細はここを参照してください)http //nicolist.net/nicocache_nl/up/img/nl411.js watchページで大百科のsummaryをタブとして表示するscript (2010/10/22 {2010/10/22 )};http //nicolist.net/nicocache_nl/up/img/nl634.js その他scriptはここを参照してください
https://w.atwiki.jp/opengl/pages/143.html
さて、前回の「再びキーフレーム」では箱が瞬間移動してしまって いました。 補間がされていないためです。 DirectX SDK 付属のビューワーでは滑らかにアニメーションが 補間されています。 今回はキーフレームとキーフレームの間を線形補間してみようと思います。 ベクトルAとベクトルB間の補間は、求める値をIとすると、 で求める事ができます。 ここでのtは現在のキー位置のパラメーターです。 尚、 0 ≦t≦ 1 で、tが0の時はAと同じ値、tが1の時はBと同じ値に なります。 前回と同じくsample2.xを表示しています。 font.h #pragma once class GLFONT { public HFONT Hfont; HDC Hdc; GLFONT(wchar_t *fontname, int size); void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) { Hfont = CreateFontW( size, //フォント高さ 0, //文字幅 0, //テキストの角度 0, //ベースラインとx軸との角度 FW_REGULAR, //フォントの太さ FALSE, //イタリック体 FALSE, //アンダーライン FALSE, //打ち消し線 SHIFTJIS_CHARSET, //文字セット OUT_DEFAULT_PRECIS, //出力精度 CLIP_DEFAULT_PRECIS, //クリッピング精度 ANTIALIASED_QUALITY, //出力品質 FIXED_PITCH | FF_MODERN, //ピッチとファミリー fontname); //書体名 Hdc = wglGetCurrentDC(); SelectObject(Hdc, Hfont); } //ワイド文字列の描画 void GLFONT DrawStringW(int x,int y,wchar_t *format, ...) { wchar_t buf[256]; va_list ap; int Length=0; int list=0; //ポインタがNULLの場合は終了 if ( format == NULL ) return; //文字列変換 va_start(ap, format); vswprintf_s(buf, format, ap); va_end(ap); Length = wcslen(buf); list = glGenLists(Length); for( int i=0; i wglUseFontBitmapsW(Hdc, buf[i], 1, list + (DWORD)i); } glDisable(GL_LIGHTING); glRasterPos2i(x, y); //ディスプレイリストで描画 for( int i=0; i { glCallList(list + i); } glEnable(GL_LIGHTING); //ディスプレイリスト破棄 glDeleteLists(list, Length); list = 0; Length = 0; } PNG.h #pragma once #include lodepng.h //テクスチャクラス class TEXTURE{ protected LodePNG_Decoder decoder;//デコーダ unsigned char* buffer;//バッファ size_t buffersize, imagesize;//サイズ public TEXTURE(); TEXTURE(const char* FileName);//コンストラクタ void LOAD_PNG(const char* FileName);//PNG読み込み unsigned char* image;//イメージポインタ unsigned int Width,Height;//画像サイズ }; TEXTURE TEXTURE(){ } TEXTURE TEXTURE(const char* FileName){ LOAD_PNG(FileName); } void TEXTURE LOAD_PNG(const char* FileName){ LodePNG_Decoder_init( decoder); //ロード LodePNG_loadFile( buffer, buffersize, FileName); //デコード LodePNG_decode( decoder, image, imagesize, buffer, buffersize); //幅,高さ Width = decoder.infoPng.width;Height = decoder.infoPng.height; } xfile.h #pragma once #include PNG.h using namespace std; //マトリクス構造体 struct MATRIX { union { struct { float _11, _12, _13, _14; float _21, _22, _23, _24; float _31, _32, _33, _34; float _41, _42, _43, _44; }; float mat_4x4[4][4]; float mat_16[16]; }; MATRIX(){//単位行列に初期化 for(int i=0;i 16;i++){ this- mat_16[i]=0; } this- _11=this- _22=this- _33=this- _44=1; } }; //3つのベクトル struct Vector3f{ float x; float y; float z; }vec3d; Vector3f operator*(Vector3f v,float size){ v.x *= size; v.y *= size; v.z *= size; return v; } Vector3f operator+(Vector3f a,Vector3f b){ a.x+=b.x; a.y+=b.y; a.z+=b.z; return a; } //4つのベクトル struct Vector4f{ float x; float y; float z; float w; }vec4d; //4つのカラー struct Color4{ float r; float g; float b; float a; }; //4つの反射 struct Reflection4{ Color4 diffuse; Color4 ambient; Color4 emission; Color4 specular; }; //UV座標 struct UV{ float u;//u値 float v;//v値 }vec2d; //ポリゴンデータ struct Triangle{ Vector3f TriVer; Vector3f TriNor; UV TriUV; }Tri; //ポリゴンデータ struct Quadrangle{ Vector3f QuadVer; Vector3f QuadNor; UV QuadUV; }Quad; //マテリアル構造体 struct MATERIAL{ string MaterialName;//マテリアル名 Reflection4 MaterialColor;//反射 float Shininess;//shininess string TextureName;//テクスチャ名 int TexNo;//テクスチャNO. vector Tridata;//三角面データ vector Quaddata;//四角面データ }mtl; //メッシュ構造体 struct MESH{ public vector Material;//マテリアル vector TexData;//テクスチャデータ vector TexID;//テクスチャID GLuint TexID2;//代入用 TEXTURE* tex;//代入用 }msh; //アニメーションデータ構造体 struct ANIMATION{ public vector Key;//アニメーションキー vector Matrix;//行列データ }anm; //ノード構造体 struct NODE{ NODE* Node;//子ノード NODE* Next;//隣の階層 string FrameName;//フレーム名 MESH* Mesh;//メッシュ ANIMATION Anim;//アニメーションデータ }nde; //階層メッシュクラス class HIERARCHY{ public void Draw();//描画 void Draw_Frame(NODE node,int Frame_Time);//フレーム描画 void Animation_Draw(int Animation_NO,int Frame);//アニメーション描画 HIERARCHY(); HIERARCHY(char* FileName,int size); NODE Root;//ルートノード int Size;//サイズ int Animation_MaxFrame;//最大フレーム private bool Load_Hierarchy(char* FileName); //階層メッシュ読み込み void Find_Frame(NODE node,char* name);//フレームを探す bool Load_Frame(FILE fp,NODE node,int hierarchy); //フレーム読み込み bool Load_Mesh(FILE fp,NODE node);//メッシュ読み込み bool Load_Animation(FILE fp);//アニメーション読み込み MATRIX Linear_Interpolation(MATRIX a,MATRIX b,float t);//線形補間 void Init(); char buffer[255]; int Back;//階層戻し NODE* pNode;//ノードポインタ }; //コンストラクタ HIERARCHY HIERARCHY(){ Init(); } //コンストラクタ HIERARCHY HIERARCHY(char* FileName,int size){ Init(); Size=size; Load_Hierarchy(FileName); } //初期化 void HIERARCHY Init(){ Root.Node=NULL; Root.Next=NULL; Root.FrameName= Root ; Root.Mesh=NULL; } //線形補間 MATRIX HIERARCHY Linear_Interpolation(MATRIX a,MATRIX b,float t){ MATRIX ret; Vector3f vec_A, vec_B; vec_A.x=a._41; vec_A.y=a._42; vec_A.z=a._43; vec_B.x=b._41; vec_B.y=b._42; vec_B.z=b._43; Vector3f vec_R=vec_A*(1.0f-t) + vec_B*t; ret._41=vec_R.x; ret._42=vec_R.y; ret._43=vec_R.z; return ret; } //フレーム描画 void HIERARCHY Draw_Frame(NODE node,int Frame_Time){ while(1){ if(node.Mesh!=NULL){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); for(int i=0;i (signed)node.Mesh- Material.size();i++){ glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,(const GLfloat *) node.Mesh- Material[i].MaterialColor.ambient); glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,(const GLfloat *) node.Mesh- Material[i].MaterialColor.diffuse); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,(const GLfloat *) node.Mesh- Material[i].MaterialColor.specular); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,node.Mesh- Material[i].Shininess); if(node.Mesh- Material[i].TexNo 0){ glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, node.Mesh- TexID[node.Mesh- Material[i].TexNo-1]); }else{ glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } //線形補間 for(int k=1;k (signed)node.Anim.Key.size();k++){ int Length=node.Anim.Key[k]-node.Anim.Key[k-1];//キー間の長さ int Current=Frame_Time-node.Anim.Key[k-1];//キー間の現在位置 float t=(float)Current/(float)Length; if((node.Anim.Key[k-1] =Frame_Time) (node.Anim.Key[k] Frame_Time)){ MATRIX Linear = Linear_Interpolation(node.Anim.Matrix[k-1],node.Anim.Matrix[k],t); glMultMatrixf( Linear.mat_16[0]); } } if(node.Mesh- Material[i].Tridata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Tri) , node.Mesh- Material[i].Tridata[0].TriVer.x); glNormalPointer(GL_FLOAT,sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriUV.u); glDrawArrays(GL_TRIANGLES,0,node.Mesh- Material[i].Tridata.size()); } if(node.Mesh- Material[i].Quaddata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Quad) , node.Mesh- Material[i].Quaddata[0].QuadVer.x); glNormalPointer(GL_FLOAT,sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadUV.u); glDrawArrays(GL_QUADS,0,node.Mesh- Material[i].Quaddata.size()); } glPopMatrix(); } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); //glDisable(GL_TEXTURE_2D); } if(node.Node!=NULL)Draw_Frame(*node.Node,Frame_Time); if(node.Next!=NULL)Draw_Frame(*node.Next,Frame_Time); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } } //アニメーション描画 void HIERARCHY Animation_Draw(int Animation_NO,int Frame){ Draw_Frame(Root,Frame); } //描画 void HIERARCHY Draw(){ Draw_Frame(Root,0); } //フレームを探す void HIERARCHY Find_Frame(NODE node,char* name){ while(1){ if(strcmp(node.FrameName.c_str(),name)==0){ pNode= node; return; } if(node.Node!=NULL)Find_Frame(*node.Node,name); if(node.Next!=NULL)Find_Frame(*node.Next,name); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } return; } //アニメーション読み込み bool HIERARCHY Load_Animation(FILE fp){ char buf[255]; char name[255]; vector Quaternion; vector Transform; vector Scaling; vector Key1; vector Key2; vector Key3; int hierarchy=0,count=0,keyID,key=0,dummy=0,x=0,y=0,z=0,w=0; //平行移動用 MATRIX move; //読み込み while(!feof( fp)) { ZeroMemory(buf,sizeof(buf)); fscanf_s( fp, %s ,buf,sizeof(buf)); //AnimationSetを探す if(strcmp(buf, AnimationSet )==0){ while(!feof( fp)) { fgets(buf,sizeof(buf), fp); if(strstr(buf, AnimationKey )==NULL){ if((!strstr(buf, { )==NULL) (!strstr(buf, } )==NULL)){//名前の抽出 sscanf_s(buf, { %s } , name,sizeof(name)); pNode=NULL; Find_Frame(Root,name); pNode- Anim.Matrix.resize(Key3.size()); for(int i=0;i (signed)Key3.size();i++){ move._41=Transform[i].x*Size; move._42=Transform[i].y*Size; move._43=Transform[i].z*Size; pNode- Anim.Key.push_back(Key3[i]); for(int j=0;j 16;j++)pNode- Anim.Matrix[i].mat_16[j]=move.mat_16[j]; } Animation_MaxFrame=Key3[Key3.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); } }else{ fgets(buf,sizeof(buf), fp);//キー 0 回転 , 1 拡大縮小 , 2 平行移動 keyID=atoi(buf); fgets(buf,sizeof(buf), fp);//キーデータの個数 count=atoi(buf); switch (keyID){ case 0 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f,%f;;, , key, dummy, vec4d.w, vec4d.x, vec4d.y, vec4d.z); Key1.push_back(key); Quaternion.push_back(vec4d); } break; case 1 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key2.push_back(key); Scaling.push_back(vec3d); } break; case 2 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key3.push_back(key); Transform.push_back(vec3d); } break; default break; } } } } } Animation_MaxFrame=pNode- Anim.Key[pNode- Anim.Key.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); return true; } //メッシュ読み込み bool HIERARCHY Load_Mesh(FILE fp,NODE node){ vector Vertex;//頂点 vector Normal;//法線 vector uv;//UV vector VertexIndex; vector NormalIndex; vector MaterialIndex; vector FaceIndex; char key[255]; char buf[255]; int v1=0,v2=0,v3=0,v4=0; int Count=0; string str= ; //読み込み while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //頂点 読み込み if(strcmp(key, Mesh )==0) { fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Vertex.push_back(vec3d*(float)Size); } //頂点インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); VertexIndex.push_back(v4); } FaceIndex.push_back(dammy); } } //法線 読み込み if(strcmp(key, MeshNormals )==0) { fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Normal.push_back(vec3d); } //法線インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); NormalIndex.push_back(v4); } } } //マテリアルリスト if(strcmp(key, MeshMaterialList )==0) { fgets(buf,sizeof(buf), fp);//空改行 fgets(buf,sizeof(buf), fp);//マテリアル数 fgets(buf,sizeof(buf), fp);//リスト要素数 Count=atoi(buf); for(int i=0;i { fgets(buf,sizeof(buf), fp); int test=atoi(buf); MaterialIndex.push_back(test); } } //マテリアル読み込み if(strcmp(key, Material )==0) { fgets(buf,sizeof(buf), fp);//直後の行にあると推定 改行する //ディフューズ fscanf_s( fp, %f;%f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z, vec4d.w); mtl.MaterialColor.diffuse=(const Color4 )vec4d; //SHININESS fscanf_s( fp, %f; , mtl.Shininess); //スペキュラー fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.specular=(const Color4 )vec4d; //エミッシブ fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.ambient=(const Color4 )vec4d; node.Mesh =new MESH(msh); node.Mesh- Material.push_back(mtl); Count=0; //マテリアル毎のデータを作成 for(int i=0;i (signed)MaterialIndex.size();i++){ if(FaceIndex[i]==3){ for(int j=0;j 3;j++){ Tri.TriVer=Vertex[VertexIndex[Count+j]]; Tri.TriNor=Normal[NormalIndex[Count+j]]; //Tri.TriUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Tridata.push_back(Tri); } Count+=3; }else{ for(int j=0;j 4;j++){ Quad.QuadVer=Vertex[VertexIndex[Count+j]]; Quad.QuadNor=Normal[NormalIndex[Count+j]]; //Quad.QuadUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Quaddata.push_back(Quad); } Count+=4; } } Vertex.clear(); Normal.clear(); uv.clear(); VertexIndex.clear(); NormalIndex.clear(); MaterialIndex.clear(); FaceIndex.clear(); return true; } } return false; } //フレーム読み込み bool HIERARCHY Load_Frame(FILE fp,NODE node,int hierarchy){ char key[255]; int begin=0,end=0; int current=hierarchy;//現在の階層 int file_pos; while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //ヘッダー読み飛ばし if(strcmp(key, Header )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //テンプレート読み飛ばし if(strcmp(key, template )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //階層+ if(strcmp(key, { )==0){ begin++; } //階層- if(strcmp(key, } )==0){ end++; } //フレーム if(strcmp(key, Frame )==0){ fscanf_s( fp, %s ,key,sizeof(key)); if(((begin==0) (end==0))||(end-begin==-1)){//子ノード追加 node.Node=new NODE(nde); node.Node- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Node); fseek( fp, file_pos, SEEK_SET ); hierarchy++; Load_Frame(fp,*node.Node,hierarchy);//再帰呼び出し } if(Back==current){//階層戻り先にきた場合、同一階層追加 Back=-1; node.Next=new NODE(nde); node.Next- FrameName=buffer; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } if(end-begin 0){// } が { より多い時は階層を戻る strcpy_s(buffer,255,key); Back=current-(end-begin); return true; } if((end-begin==0) ((begin!=0) (end!=0))){//同一階層追加 node.Next=new NODE(nde); node.Next- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } //階層を戻る if((Back!=-1) (Back } } return true; } //階層メッシュ読み込み bool HIERARCHY Load_Hierarchy(char* FileName){ //Xファイルを開いて内容を読み込む Back=-1; int Hierarchy=0; FILE* fp=NULL; fopen_s( fp,FileName, rt ); //読み込み fseek(fp,0,SEEK_SET); Load_Frame(*fp,Root,Hierarchy); fseek(fp,0,SEEK_SET); Load_Animation(*fp); fclose(fp); return true; } main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include xfile.h #include font.h #define WIDTH 320 #define HEIGHT 240 float angle=0.0f; HIERARCHY* hierarchy; GLFONT *font; wstring wstr; wchar_t wchar[255]; int CurrentFrame; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,WIDTH,HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, WIDTH/HEIGHT, 0.1, 2000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 1000.0, 1000.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //階層アニメーション hierarchy- Animation_Draw(0,CurrentFrame); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); wstr=L 最大フレーム[ ; _itow_s(hierarchy- Animation_MaxFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,16,(wchar_t *)wstr.c_str()); wstr=L 現在のフレーム[ ; _itow_s(CurrentFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,32,(wchar_t *)wstr.c_str()); glutSwapBuffers(); } void idle(void) { if(hierarchy- Animation_MaxFrame CurrentFrame)CurrentFrame=0; Sleep(1); glutPostRedisplay(); } //タイマー void timer(int value) { CurrentFrame+=30; glutTimerFunc(10 , timer , 0); } void Init(){ glClearColor(0.0, 0.0, 0.0, 1.0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); hierarchy = new HIERARCHY( sample2.x ,100); font = new GLFONT(L MS明朝 , 16); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( 線形補間 ); glutDisplayFunc(display); glutIdleFunc(idle); glutTimerFunc(10 , timer , 0); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/opengl/pages/147.html
平行移動と同じようにして拡大縮小も線形補間してみました。 新規に作成した sample3.x を表示しています。 font.h #pragma once class GLFONT { public HFONT Hfont; HDC Hdc; GLFONT(wchar_t *fontname, int size); void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) { Hfont = CreateFontW( size, //フォント高さ 0, //文字幅 0, //テキストの角度 0, //ベースラインとx軸との角度 FW_REGULAR, //フォントの太さ FALSE, //イタリック体 FALSE, //アンダーライン FALSE, //打ち消し線 SHIFTJIS_CHARSET, //文字セット OUT_DEFAULT_PRECIS, //出力精度 CLIP_DEFAULT_PRECIS, //クリッピング精度 ANTIALIASED_QUALITY, //出力品質 FIXED_PITCH | FF_MODERN, //ピッチとファミリー fontname); //書体名 Hdc = wglGetCurrentDC(); SelectObject(Hdc, Hfont); } //ワイド文字列の描画 void GLFONT DrawStringW(int x,int y,wchar_t *format, ...) { wchar_t buf[256]; va_list ap; int Length=0; int list=0; //ポインタがNULLの場合は終了 if ( format == NULL ) return; //文字列変換 va_start(ap, format); vswprintf_s(buf, format, ap); va_end(ap); Length = wcslen(buf); list = glGenLists(Length); for( int i=0; i wglUseFontBitmapsW(Hdc, buf[i], 1, list + (DWORD)i); } glDisable(GL_LIGHTING); glRasterPos2i(x, y); //ディスプレイリストで描画 for( int i=0; i { glCallList(list + i); } glEnable(GL_LIGHTING); //ディスプレイリスト破棄 glDeleteLists(list, Length); list = 0; Length = 0; } PNG.h #pragma once #include lodepng.h //テクスチャクラス class TEXTURE{ protected LodePNG_Decoder decoder;//デコーダ unsigned char* buffer;//バッファ size_t buffersize, imagesize;//サイズ public TEXTURE(); TEXTURE(const char* FileName);//コンストラクタ void LOAD_PNG(const char* FileName);//PNG読み込み unsigned char* image;//イメージポインタ unsigned int Width,Height;//画像サイズ }; TEXTURE TEXTURE(){ } TEXTURE TEXTURE(const char* FileName){ LOAD_PNG(FileName); } void TEXTURE LOAD_PNG(const char* FileName){ LodePNG_Decoder_init( decoder); //ロード LodePNG_loadFile( buffer, buffersize, FileName); //デコード LodePNG_decode( decoder, image, imagesize, buffer, buffersize); //幅,高さ Width = decoder.infoPng.width;Height = decoder.infoPng.height; } xfile.h #pragma once #include PNG.h using namespace std; //マトリクス構造体 struct MATRIX { union { struct { float _11, _12, _13, _14; float _21, _22, _23, _24; float _31, _32, _33, _34; float _41, _42, _43, _44; }; float mat_4x4[4][4]; float mat_16[16]; }; MATRIX(){//単位行列に初期化 for(int i=0;i 16;i++){ this- mat_16[i]=0; } this- _11=this- _22=this- _33=this- _44=1; } }; //3つのベクトル struct Vector3f{ float x; float y; float z; }vec3d; Vector3f operator*(Vector3f v,float size){ v.x *= size; v.y *= size; v.z *= size; return v; } Vector3f operator+(Vector3f a,Vector3f b){ a.x+=b.x; a.y+=b.y; a.z+=b.z; return a; } //4つのベクトル struct Vector4f{ float x; float y; float z; float w; }vec4d; //4つのカラー struct Color4{ float r; float g; float b; float a; }; //4つの反射 struct Reflection4{ Color4 diffuse; Color4 ambient; Color4 emission; Color4 specular; }; //UV座標 struct UV{ float u;//u値 float v;//v値 }vec2d; //ポリゴンデータ struct Triangle{ Vector3f TriVer; Vector3f TriNor; UV TriUV; }Tri; //ポリゴンデータ struct Quadrangle{ Vector3f QuadVer; Vector3f QuadNor; UV QuadUV; }Quad; //マテリアル構造体 struct MATERIAL{ string MaterialName;//マテリアル名 Reflection4 MaterialColor;//反射 float Shininess;//shininess string TextureName;//テクスチャ名 int TexNo;//テクスチャNO. vector Tridata;//三角面データ vector Quaddata;//四角面データ }mtl; //メッシュ構造体 struct MESH{ public vector Material;//マテリアル vector TexData;//テクスチャデータ vector TexID;//テクスチャID GLuint TexID2;//代入用 TEXTURE* tex;//代入用 }msh; //アニメーションデータ構造体 struct ANIMATION{ public vector Key;//アニメーションキー vector Matrix;//行列データ }anm; //ノード構造体 struct NODE{ NODE* Node;//子ノード NODE* Next;//隣の階層 string FrameName;//フレーム名 MESH* Mesh;//メッシュ ANIMATION Anim;//アニメーションデータ }nde; //階層メッシュクラス class HIERARCHY{ public void Draw();//描画 void Draw_Frame(NODE node,int Frame_Time);//フレーム描画 void Animation_Draw(int Animation_NO,int Frame);//アニメーション描画 HIERARCHY(); HIERARCHY(char* FileName,int size); NODE Root;//ルートノード int Size;//サイズ int Animation_MaxFrame;//最大フレーム private bool Load_Hierarchy(char* FileName); //階層メッシュ読み込み void Find_Frame(NODE node,char* name);//フレームを探す bool Load_Frame(FILE fp,NODE node,int hierarchy); //フレーム読み込み bool Load_Mesh(FILE fp,NODE node);//メッシュ読み込み bool Load_Animation(FILE fp);//アニメーション読み込み MATRIX Linear_Interpolation(MATRIX a,MATRIX b,float t);//線形補間 void Init(); char buffer[255]; int Back;//階層戻し NODE* pNode;//ノードポインタ }; //コンストラクタ HIERARCHY HIERARCHY(){ Init(); } //コンストラクタ HIERARCHY HIERARCHY(char* FileName,int size){ Init(); Size=size; Load_Hierarchy(FileName); } //初期化 void HIERARCHY Init(){ Root.Node=NULL; Root.Next=NULL; Root.FrameName= Root ; Root.Mesh=NULL; } //線形補間 MATRIX HIERARCHY Linear_Interpolation(MATRIX a,MATRIX b,float t){ MATRIX ret; Vector3f vec_A, vec_B, vec_R; //平行移動 vec_A.x=a._41; vec_A.y=a._42; vec_A.z=a._43; vec_B.x=b._41; vec_B.y=b._42; vec_B.z=b._43; vec_R=vec_A*(1.0f-t) + vec_B*t; ret._41=vec_R.x; ret._42=vec_R.y; ret._43=vec_R.z; //スケーリング vec_A.x=a._11; vec_A.y=a._22; vec_A.z=a._33; vec_B.x=b._11; vec_B.y=b._22; vec_B.z=b._33; vec_R=vec_A*(1.0f-t) + vec_B*t; ret._11=vec_R.x; ret._22=vec_R.y; ret._33=vec_R.z; return ret; } //フレーム描画 void HIERARCHY Draw_Frame(NODE node,int Frame_Time){ while(1){ if(node.Mesh!=NULL){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); for(int i=0;i (signed)node.Mesh- Material.size();i++){ glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,(const GLfloat *) node.Mesh- Material[i].MaterialColor.ambient); glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,(const GLfloat *) node.Mesh- Material[i].MaterialColor.diffuse); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,(const GLfloat *) node.Mesh- Material[i].MaterialColor.specular); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,node.Mesh- Material[i].Shininess); if(node.Mesh- Material[i].TexNo 0){ glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, node.Mesh- TexID[node.Mesh- Material[i].TexNo-1]); }else{ glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } //線形補間 for(int k=1;k (signed)node.Anim.Key.size();k++){ int Length=node.Anim.Key[k]-node.Anim.Key[k-1];//キー間の長さ int Current=Frame_Time-node.Anim.Key[k-1];//キー間の現在位置 float t=(float)Current/(float)Length; if((node.Anim.Key[k-1] =Frame_Time) (node.Anim.Key[k] Frame_Time)){ MATRIX Linear = Linear_Interpolation(node.Anim.Matrix[k-1],node.Anim.Matrix[k],t); glMultMatrixf( Linear.mat_16[0]); } } if(node.Mesh- Material[i].Tridata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Tri) , node.Mesh- Material[i].Tridata[0].TriVer.x); glNormalPointer(GL_FLOAT,sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriUV.u); glDrawArrays(GL_TRIANGLES,0,node.Mesh- Material[i].Tridata.size()); } if(node.Mesh- Material[i].Quaddata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Quad) , node.Mesh- Material[i].Quaddata[0].QuadVer.x); glNormalPointer(GL_FLOAT,sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadUV.u); glDrawArrays(GL_QUADS,0,node.Mesh- Material[i].Quaddata.size()); } glPopMatrix(); } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); //glDisable(GL_TEXTURE_2D); } if(node.Node!=NULL)Draw_Frame(*node.Node,Frame_Time); if(node.Next!=NULL)Draw_Frame(*node.Next,Frame_Time); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } } //アニメーション描画 void HIERARCHY Animation_Draw(int Animation_NO,int Frame){ Draw_Frame(Root,Frame); } //描画 void HIERARCHY Draw(){ Draw_Frame(Root,0); } //フレームを探す void HIERARCHY Find_Frame(NODE node,char* name){ while(1){ if(strcmp(node.FrameName.c_str(),name)==0){ pNode= node; return; } if(node.Node!=NULL)Find_Frame(*node.Node,name); if(node.Next!=NULL)Find_Frame(*node.Next,name); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } return; } //アニメーション読み込み bool HIERARCHY Load_Animation(FILE fp){ char buf[255]; char name[255]; vector Quaternion; vector Transform; vector Scaling; vector Key1; vector Key2; vector Key3; int hierarchy=0,count=0,keyID,key=0,dummy=0,x=0,y=0,z=0,w=0; //合成行列 MATRIX mix; //読み込み while(!feof( fp)) { ZeroMemory(buf,sizeof(buf)); fscanf_s( fp, %s ,buf,sizeof(buf)); //AnimationSetを探す if(strcmp(buf, AnimationSet )==0){ while(!feof( fp)) { fgets(buf,sizeof(buf), fp); if(strstr(buf, AnimationKey )==NULL){ if((!strstr(buf, { )==NULL) (!strstr(buf, } )==NULL)){//名前の抽出 sscanf_s(buf, { %s } , name,sizeof(name)); pNode=NULL; Find_Frame(Root,name); pNode- Anim.Matrix.resize(Key3.size()); for(int i=0;i (signed)Key3.size();i++){ if(Key2.size()==Key3.size()){ mix._11=Scaling[i].x; mix._22=Scaling[i].y; mix._33=Scaling[i].z; } mix._41=Transform[i].x*Size; mix._42=Transform[i].y*Size; mix._43=Transform[i].z*Size; pNode- Anim.Key.push_back(Key3[i]); for(int j=0;j 16;j++)pNode- Anim.Matrix[i].mat_16[j]=mix.mat_16[j]; } Animation_MaxFrame=Key3[Key3.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); } }else{ fgets(buf,sizeof(buf), fp);//キー 0 回転 , 1 拡大縮小 , 2 平行移動 keyID=atoi(buf); fgets(buf,sizeof(buf), fp);//キーデータの個数 count=atoi(buf); switch (keyID){ case 0 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f,%f;;, , key, dummy, vec4d.w, vec4d.x, vec4d.y, vec4d.z); Key1.push_back(key); Quaternion.push_back(vec4d); } break; case 1 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key2.push_back(key); Scaling.push_back(vec3d); } break; case 2 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key3.push_back(key); Transform.push_back(vec3d); } break; default break; } } } } } Animation_MaxFrame=pNode- Anim.Key[pNode- Anim.Key.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); return true; } //メッシュ読み込み bool HIERARCHY Load_Mesh(FILE fp,NODE node){ vector Vertex;//頂点 vector Normal;//法線 vector uv;//UV vector VertexIndex; vector NormalIndex; vector MaterialIndex; vector FaceIndex; char key[255]; char buf[255]; int v1=0,v2=0,v3=0,v4=0; int Count=0,Hierarchy=1; string str= ; fscanf_s( fp, %s ,key,sizeof(key)); node.Mesh =new MESH(msh); //読み込み while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //階層+ if(strcmp(key, { )==0){ Hierarchy++; } //階層- if(strcmp(key, } )==0){ Hierarchy--; if(Hierarchy==0){ Count=0; //マテリアル毎のデータを作成 for(int i=0;i (signed)MaterialIndex.size();i++){ if(FaceIndex[i]==3){ for(int j=0;j 3;j++){ Tri.TriVer=Vertex[VertexIndex[Count+j]]; Tri.TriNor=Normal[NormalIndex[Count+j]]; //Tri.TriUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Tridata.push_back(Tri); } Count+=3; }else{ for(int j=0;j 4;j++){ Quad.QuadVer=Vertex[VertexIndex[Count+j]]; Quad.QuadNor=Normal[NormalIndex[Count+j]]; //Quad.QuadUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Quaddata.push_back(Quad); } Count+=4; } } Vertex.clear(); Normal.clear(); uv.clear(); VertexIndex.clear(); NormalIndex.clear(); MaterialIndex.clear(); FaceIndex.clear(); return true; } } //頂点 読み込み if(strcmp(key, Mesh )==0) { Hierarchy++; fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Vertex.push_back(vec3d*(float)Size); } //頂点インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); VertexIndex.push_back(v4); } FaceIndex.push_back(dammy); } } //法線 読み込み if(strcmp(key, MeshNormals )==0) { Hierarchy++; fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Normal.push_back(vec3d); } //法線インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); NormalIndex.push_back(v4); } } } //マテリアルリスト if(strcmp(key, MeshMaterialList )==0) { Hierarchy++; fgets(buf,sizeof(buf), fp);//空改行 fgets(buf,sizeof(buf), fp);//マテリアル数 fgets(buf,sizeof(buf), fp);//リスト要素数 Count=atoi(buf); for(int i=0;i { fgets(buf,sizeof(buf), fp); int test=atoi(buf); MaterialIndex.push_back(test); } } //マテリアル読み込み if(strcmp(key, Material )==0) { Hierarchy++; fgets(buf,sizeof(buf), fp);//直後の行にあると推定 改行する //ディフューズ fscanf_s( fp, %f;%f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z, vec4d.w); mtl.MaterialColor.diffuse=(const Color4 )vec4d; //SHININESS fscanf_s( fp, %f; , mtl.Shininess); //スペキュラー fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.specular=(const Color4 )vec4d; //エミッシブ fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.ambient=(const Color4 )vec4d; node.Mesh- Material.push_back(mtl); } } return false; } //フレーム読み込み bool HIERARCHY Load_Frame(FILE fp,NODE node,int hierarchy){ char key[255]; int begin=0,end=0; int current=hierarchy;//現在の階層 int file_pos; while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //ヘッダー読み飛ばし if(strcmp(key, Header )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //テンプレート読み飛ばし if(strcmp(key, template )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //階層+ if(strcmp(key, { )==0){ begin++; } //階層- if(strcmp(key, } )==0){ end++; } //フレーム if(strcmp(key, Frame )==0){ fscanf_s( fp, %s ,key,sizeof(key)); if(((begin==0) (end==0))||(end-begin==-1)){//子ノード追加 node.Node=new NODE(nde); node.Node- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Node); fseek( fp, file_pos, SEEK_SET ); hierarchy++; Load_Frame(fp,*node.Node,hierarchy);//再帰呼び出し } if(Back==current){//階層戻り先にきた場合、同一階層追加 Back=-1; node.Next=new NODE(nde); node.Next- FrameName=buffer; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } if(end-begin 0){// } が { より多い時は階層を戻る strcpy_s(buffer,255,key); Back=current-(end-begin); return true; } if((end-begin==0) ((begin!=0) (end!=0))){//同一階層追加 node.Next=new NODE(nde); node.Next- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } //階層を戻る if((Back!=-1) (Back } } return true; } //階層メッシュ読み込み bool HIERARCHY Load_Hierarchy(char* FileName){ //Xファイルを開いて内容を読み込む Back=-1; int Hierarchy=0; FILE* fp=NULL; fopen_s( fp,FileName, rt ); //読み込み fseek(fp,0,SEEK_SET); Load_Frame(*fp,Root,Hierarchy); fseek(fp,0,SEEK_SET); Load_Animation(*fp); fclose(fp); return true; } main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include xfile.h #include font.h #define WIDTH 320 #define HEIGHT 240 float angle=0.0f; HIERARCHY* hierarchy; GLFONT *font; wstring wstr; wchar_t wchar[255]; int CurrentFrame; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,WIDTH,HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, WIDTH/HEIGHT, 0.1, 2000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 1000.0, 1000.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //階層アニメーション hierarchy- Animation_Draw(0,CurrentFrame); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); wstr=L 最大フレーム[ ; _itow_s(hierarchy- Animation_MaxFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,16,(wchar_t *)wstr.c_str()); wstr=L 現在のフレーム[ ; _itow_s(CurrentFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,32,(wchar_t *)wstr.c_str()); glutSwapBuffers(); } void idle(void) { if(hierarchy- Animation_MaxFrame CurrentFrame)CurrentFrame=0; Sleep(1); glutPostRedisplay(); } //タイマー void timer(int value) { CurrentFrame+=30; glutTimerFunc(10 , timer , 0); } void Init(){ glClearColor(0.0, 0.0, 0.0, 1.0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); hierarchy = new HIERARCHY( sample3.x ,100); font = new GLFONT(L MS明朝 , 16); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( Xの階層メッシュアニメーション読み込み ); glutDisplayFunc(display); glutIdleFunc(idle); glutTimerFunc(10 , timer , 0); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/kaekonishi/pages/25.html
ミオシンホスファターゼ(MP, MLCP)に含まれるサブユニット。MPは110kDaのMYPT1、21kDaのM20とPP1cから構成されるヘテロ三量体である。MYPT1のN端側にPP1cが、C端側にM20が結合する。PP1cはMYPT1との結合により、ミオシンに対するホスファターゼ活性が上昇する(基質特異性の発現)。またMYPT1はミオシンとの結合により、ミオシンホスファターゼを基質であるミオシンに局在させる機能も有している。 MYPT1の分子量は110kDa、1000前後のアミノ酸残基より構成され、N端側に7回のアンキリンリピート構造が認められるのが特徴である。このアンキリンリピート構造はタンパク質の相互作用に必要と考えられており、ミオシンホスファターゼに於いてもPP1cと結合しミオシンホスファターゼ活性を上昇させる機能を果たしている。 Rhoキナーゼの他にILKやZipキナーゼによるMYPT1リン酸化酵素も報告されているが、それらはまだ十分に解明されていない。
https://w.atwiki.jp/gundamfamily/pages/8454.html
646通常の名無しさんの3倍2017/07/27(木) 21 58 05.81ID kve9YXuZ0 647 アムロ「いや~めでたい!」 セレーネ「まさかイオがねえ」 ロラン「いやいや僕はなんだかんだいってイオ兄さんはいつかちゃんとやってくれる人だと思ってましたよ」 イオ「ふっ、そんなおだてんなよ」 カミーユ「なんだ、どうしたこの騒ぎ」 キオ「めでたいって、イオ兄ちゃん結婚でもするの?」 シーブック「いや、それはないな(断言」 コウ「むしろこの間、ずっと付き合ってたクローディアさんにフられたっていってたしね」 ガロード「無職ヒモニートがただの無職ニートにジョブチェンジした瞬間だったなw」 ジュドー「いやジョブチェンジって言わないでしょそれ」 シュウト「サ○ギマンからサナ○マンに変身するようなもんだよね」 カミーユ「じゃあ兄貴たちは何を祝ってんだ?」 ドモン「しかし驚いたな。まさかイオ兄さんが芸能事務所にスカウトされるとは」 セレーネ「腕はともかく性格がアレなんでずっとどこからもお声がかからなかったのにねえ」 イオ「いや断ってただけだから!縛られるの嫌いなんでずっと断ってただけだから!」 マイ「じゃあなんで今回スカウト受けたんです?」 イオ「ふっ、ついに俺も年貢の納め時っていうかな。向こうがどうしても俺に来てほしいと頼むもんだかr」 シロー「単にクローディアに捨てられて、生活費を自分で稼がないといけなくなったってだけだろ」 イオ「ぐふうっ!(図星」 アムロ「まあ理由はこのさいどうでもいいじゃないか」 ロラン「そうですよ、イオ兄さんが真面目に働いてくれる気になってくれただけで嬉しいですよ僕は」 マイ「ロランはずっと家計の心配してましたからね」 シロー「でも芸能事務所ってだいたい歩合制だろ?働いた分だけ給料の出る」 セレーネ「根本的にめんどくさがりのアンタがちゃんと働くわけ?どうせ全然働かないままクビってオチじゃないの~?」 アムロ「根本的にめんどくさがりって、いくらイオでもお前にだけは言われたくないと思うぞセレーネ」 イオ「ふっ、今の俺を今までと同じと思ってもらっちゃ困るぜ。せっかくミュージシャンとしての腕を買ってくれたんだ、地方のドサ回り営業だろうがなんだろうがやってやるよ!」 ドモン「おお…イオ兄さんらしくないなんて前向きな発言なんだ」 ロラン「兄さん…(感涙」 イオ「やるからには芸能界のトップ取るぜ!待ってろよ芸能事務所スパルタン!!」 アムロ「くうっ…!あのイオがこんな立派なことをいうようになるとは…!」 シロー「(正直不安しかない……)」 一か月後 サンダース「今日はこの通りを重点的にパトロールか」 カレン「最近、この辺でしつこいスカウトマンが出るって苦情が来てるからね」 ミケル「そうですねって…あれ?あそこにいる金髪の人、隊長の兄弟じゃないですか?」 シロー「え?…本当だ、確かにイオだ。あいつ、こんな真昼間からなにやってんだ?」 エレドア「あ、なんか通りすがりの女の子に声かけた」 イオ「ねえそこの君!かわいいねウチの事務所でアイドル目指さないか!?」 ジュリエッタ「は?突然声をかけて何を言いだすんですかアナタ死んでください」 イオ「いやまあそう言わずに話だけでもさあ!」 ミケル「隊長…最近この辺に出るしつこいスカウトマンってまさか」 シロー「おいイオ!お前何やってるんだこんなとこで!!」 イオ「よおシロー。なにって見りゃわかんだろ、仕事だよ」 シロー「いやお前ミュージシャンとして採用されたんじゃなかったのか?それがどうして街中でアイドルのスカウトなんてやってるんだ」 イオ「……あっれえ~???」 芸能事務所 スパルタンプロ パイク「…あいつ、自分が本当はアイドルプロデューサーとして採用されたっていつ気付きますかね」 モニカ「わたしの予想だと、そろそろ騙されたって気付いて怒鳴り込んでくるころね」 THE GUNDAMM@STER THUNDERBOLTGRILS編に続く…? link_anchor plugin error 画像もしくは文字列を必ずどちらかを入力してください。このページにつけられたタグ イオ・フレミング ガンダム一家
https://w.atwiki.jp/bero/pages/38.html
ダウンロードページ 外国 BrawlBox Data Viewer http //www.smashboards.com/showthread.php?t=238861 スマブラハックをする上で必須アイテムです。 BrawlBox Modset http //www.smashboards.com/showthread.php?t=277835 べろによる改良版BrawlBoxです。対応ファイルが増えているほかBrawlBoxの作者であるKryal氏本人による、アニメーションのドラッグ/ドロップ編集機能が備わっています。 Smash Attacks http //forums.kc-mm.com/Gallery/BrawlView.php?Number=17599 スマブラハック界の第一人者Phantom Wings氏が作成し、 DivineOverlord氏, Eldiranv氏, SiLeNtDo0m氏 Dantarion 氏 が手を加えたキャラ設定(Fit○○.pac)編集ソフトです。 デデデ、ポケモントレーナー、アイスクライマーなどの一部のキャラは1.85を使用してください べろの自作ソフト コードセットダウンローダー1.1 http //www1.axfc.net/uploader/Sc/so/102220.zip Brawl+とProject Mのコードセットをダウンロードしてきて配置までします。最新版は自動でチェックします。 SD Manager http //www1.axfc.net/uploader/He/so/274863.zip 音楽をスマブラ用(Brstm形式)に変換する物です。 音質はBCSM-GUIより良くなっています。 Stage Switcher http //www1.axfc.net/uploader/Sc/so/172840.zip ステージのrelを編集します。あるステージを別のステージから読み込めるようにできます。 11/13 stg_customX.relの出力に対応 Brawl Custom File Manager 1.1 http //www1.axfc.net/uploader/Sc/so/112376.zip スマブラのハックファイルの管理を用意にするものです。 BCSM-GUIをモデルに作っていますが、機能はこれから追加していき、充実させていきたいと思います。 GCT Tool http //www1.axfc.net/uploader/Sc/so/222621.zip Ocarina Code Managerに 全てチェック/チェック解除/チェック反転 選択したアイテムのみチェック/チェック解除/チェック反転 ソート GCT逆コンパイル、および解析 (コード名解析・エクスポート) データベース化してコードを保存 といった機能を加えたマイナーチェンジ版です。 その他 Brawl Mod Launcher 日本語版 (Riivolution用XMLファイル) http //ux.getuploader.com/wiisk2/download/9/SSBBRiivolution.zip Bionic氏が作成した Brawl Mod Launcher を日本語版に対応させ、 いくつかのマイナーチェンジを加えたものです 9/24 Custom Sound Engine に対応 Stage Expansion JP http //ux.getuploader.com/wiisk2/download/4/Stage+Expansion+JP.7z Stage Roster Expansion System v2.0 で使用する sc_selmap.pacを日本語に直したものです RSBJ Data http //www.mediafire.com/?yypxlcgn5hb0m スマブラX日本語版のpac等のデータファイルです(音楽など一部除く)